#pragma once
#include "RenderGraphBuilder.h"
#include "RendererInterface.h"

namespace Alice
{
    /** The renderer module implementation. */
    class RendererModule final : public IRendererModule
    {
    public:
        RendererModule();
        void BeginRenderingViewFamily();
    };
    /**
     * Used as the scope for scene rendering functions.
     * It is initialized in the game thread by FSceneViewFamily::BeginRender, and then passed to the rendering thread.
     * The rendering thread calls Render(), and deletes the scene renderer when it returns.
     */
    class SceneRenderer
    {
    public:
        virtual void Render(RDGBuilder& GraphBuilder) = 0;
    };
    class DeferredShadingRenderer:public SceneRenderer
    {
    public:
        void Render(RDGBuilder& GraphBuilder);
    };
}
